iT邦幫忙

2022 iThome 鐵人賽

DAY 19
0
Software Development

30天學會Golang系列 第 19

Day19 - Go的正則表達式

  • 分享至 

  • xImage
  •  

正則表達式規則

正則表達式常用來處理匹配字符串,一般多是用來網路爬蟲,與字串搜尋是否有什麼關鍵字有點類似,但是功能更強大,可以判斷一整片文章中是否有出現自定義的規則,go 提供 regexp 標準庫來處理正則表達式的問題,以下是參考 參考來源1參考來源2 的內容:

匹配字符

.:匹配除換行符以外的任意字符
[...]:匹配字符集,如果第一字符是^,則剛好相反,可參考下面範例
\w:匹配[A-Za-z0-9]
\s:匹配任意的空白符號
\d:匹配數字[0-9]
\b:匹配單詞的開始或結束
^:匹配字符串的開始
$:匹配字符串的結束

匹配數量

*:重複零次或更多次
+:重複一次或更多次
?:重複零次或一次
{n}:重複n次
{n,}:重複n次或更多次
{n,m}:重複n到m次

上面的規則看起來有些抽象,下面用一些小範例來解釋:

const ComparedSentence = "abc@ade.com abd@bcd.com"

func main() {
	//解析正则表達式,如果成功返回解释器
	reg := regexp.MustCompile(`a[^\t]+.com`) // \t表空格,[^\t]表示除了空格外,其他都可
	if reg == nil {
		fmt.Println("regexp err")
		return
	}

	result := reg.FindAllStringSubmatch(ComparedSentence, -1)
	fmt.Println("result = ", result)
}

輸出結果為:

result =  [[abc@ade.com] [abd@bcd.com]]

一般來說,我自己比較常用的是 [...] 與 ^ 以及 * 與 + ,這規則應該不用特別背,要的時後再查也行

第19天報到,接下來會介紹網路爬蟲,先幫網路爬蟲鋪路:)

參考來源

  1. https://reurl.cc/MN5eRL
  2. http://c.biancheng.net/view/5124.html

代碼連結

https://github.com/luckyuho/ithome30-golang/tree/main/day19


上一篇
Day18 - Go的 package
下一篇
Day20 - Go的正則表達式與簡易爬蟲
系列文
30天學會Golang31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言